// pages/publish/publish.js
const app = getApp();

Page({
  data: {
    title: '', // 商品标题
    categoryIndex: 0, // 分类索引
    categories: ['宿舍用品', '课本书籍', '鞋服包饰', '食品饮料', '其他好物'], // 分类选项
    price: '', // 商品价格
    content: '', // 商品描述
    images: [], // 图片临时路径数组
    isLoading: false // 提交状态
  },

  // 标题输入处理
  handleTitleInput(e) {
    this.setData({ title: e.detail.value.trim() });
  },

  // 分类选择处理
  handleCategoryChange(e) {
    this.setData({ categoryIndex: parseInt(e.detail.value) });
  },

  // 价格输入处理
  handlePriceInput(e) {
    this.setData({ price: e.detail.value.trim() });
  },

  // 描述输入处理
  handleContentInput(e) {
    this.setData({ content: e.detail.value.trim() });
  },

  // 选择图片
  chooseImage() {
    wx.chooseImage({
      count: 9 - this.data.images.length, // 最多9张
      sizeType: ['compressed'], // 压缩图片
      sourceType: ['album', 'camera'], // 相册/相机
      success: (res) => {
        this.setData({
          images: [...this.data.images, ...res.tempFilePaths]
        });
      }
    });
  },

  // 预览图片
  previewImage(e) {
    const index = e.currentTarget.dataset.index;
    wx.previewImage({
      current: this.data.images[index],
      urls: this.data.images
    });
  },

  // 删除图片
  deleteImage(e) {
    const index = e.currentTarget.dataset.index;
    const images = [...this.data.images];
    images.splice(index, 1);
    this.setData({ images });
  },

  // 提交表单
  async handleSubmit() {
    // 表单验证
    const { title, categoryIndex, categories, price, content, images } = this.data;
    if (!title) {
      wx.showToast({ title: '请输入商品标题', icon: 'none' });
      return;
    }
    if (categories[categoryIndex] === undefined) {
      wx.showToast({ title: '请选择商品分类', icon: 'none' });
      return;
    }
    if (!price || isNaN(Number(price))) {
      wx.showToast({ title: '请输入有效商品价格', icon: 'none' });
      return;
    }
    if (!content) {
      wx.showToast({ title: '请输入商品描述', icon: 'none' });
      return;
    }
    if (images.length === 0) {
      wx.showToast({ title: '请上传至少1张商品图片', icon: 'none' });
      return;
    }

    this.setData({ isLoading: true });
    try {
      // 获取学号（从全局变量）
      const stdId = app.globalData.userInfo?.stdId;
      if (!stdId) {
        throw new Error('未获取到学号，请先登录');
      }

      // 上传图片到云存储
      const imageFileIDs = [];
      for (let i = 0; i < images.length; i++) {
        const res = await wx.cloud.uploadFile({
          cloudPath: `shangpin/${Date.now()}-${i}.png`,
          filePath: images[i]
        });
        imageFileIDs.push(res.fileID);
      }

      // 调用云函数保存商品信息
      const { result } = await wx.cloud.callFunction({
        name: 'publishShangpin',
        data: {
          title,
          fenlei: categories[categoryIndex],
          price: Number(price),
          content,
          imagesp: imageFileIDs,
          stdId
        }
      });

      if (result.code === 0) {
        wx.showToast({
          title: '发布成功',
          icon: 'success',
          duration: 1500,
          success: () => {
            setTimeout(() => {
              wx.navigateBack(); // 返回上一页
            }, 1500);
          }
        });
      } else {
        wx.showToast({ title: result.message || '发布失败，请重试', icon: 'none' });
      }
    } catch (error) {
      console.error('发布异常:', error);
      wx.showToast({ title: '网络异常，请重试', icon: 'none' });
    } finally {
      this.setData({ isLoading: false });
    }
  }
});